/*
 * @Author: Bertels Nick
 * @Description: PersoneelToevoegenService 
 * @Date: 17/11/2013
 * */

package core.logic.services.createServices;

import javax.swing.JOptionPane;


import core.logic.dataAccess.AdresDAO;
import core.logic.dataAccess.EigenaarDAO;
import core.logic.dataAccess.ParameterDAO;
import core.logic.dataAccess.PersoneelDAO;
import core.logic.dataAccess.PersoonDAO;
import core.logic.dataAccess.Persoon_NationaliteitDAO;
import core.models.dataModels.createModels.ToevoegenPersoneelModel;
import core.models.domainModel.Adres;

public class ToevoegenPersoneelService 
{
	public static ToevoegenPersoneelModel getToevoegenPersoneelModel(){
		
		//Maak nieuw model aan
		ToevoegenPersoneelModel model = new ToevoegenPersoneelModel();
		
		//Dropdown opvullen met eigenaars
		model.set_mogelijkeEigenaars(EigenaarDAO.getAllEigenaars());
		model.setMogelijkeNationaliteiten(ParameterDAO.getMogelijkeLandcodes("LandCode"));
		//Model terug naar de controller sturen
		return model;
	}
	
	//Lieven Drijkoningen
	//Toevoegen in systeem van personeel in verschillende stappen. Moet dit anders?
	//De validatie of de adressen, personen, personeel al bestaat gebeurt ergens anders...
	
	public static void insertPersoneel(ToevoegenPersoneelModel model)
	{
		int personeelid = 0;
		boolean b;		
		Adres a;
		//Eerste stap, aanmaken van een nieuw adres indien dit nog niet bestaat		
		//Als het een nieuw adres is, wordt het adresid meegegeven met het model
		//Lieven Drijkoningen C1017178
		if(model.getAdresId() > 0)
		{
			b = false;			
			JOptionPane.showMessageDialog(null, "Dit adres bestaat al, en wordt niet nog eens toegevoegd");
		}
		else
		{
			b = true;
		}
		if(b == true)
		{
			a = new Adres(model.get_straat(), model.get_huisnummer(), model.get_bus(), model.get_gemeente(), model.get_postcode(), model.get_stadProvincie(), model.get_land());
			model.setAdresId(AdresDAO.AddAdres(a));
		}	
		
		//Tweede stap, aanmaken van een nieuw persoon indien deze nog niet bestaat
		//Hier wordt bij een nieuw adres, het adresId meegegeven met het model
		//Lieven Drijkoningen C1017178
		if(model.getPersoonId() > 0)
		{
			b = false;			
			JOptionPane.showMessageDialog(null, "Deze persoon bestaat al, en wordt niet nog eens toegevoegd");
		}
		else
		{
			b = true;
		}
		//Als het een nieuwe persoon is, wordt de tabel Persoon_nationaliteiten ook aangevuld
		//Lieven Drijkoningen C1017178
		if(b == true)
		{
			model.setPersoonId(PersoonDAO.insertPersoon(model));
		}		
	
		//Derde stap, toevoegen van personeelslid indien deze nog niet bestaat
		//Eerst nog valideren of de persoon nog niet bestaat als personeelslid
		personeelid = PersoneelDAO.getPersoneelId(model);
		if(personeelid>0)
		{
			JOptionPane.showMessageDialog(null, "Deze persoon is al geregistreerd als werknemer");
		}
		else
		{			
			PersoneelDAO.insertPersoneel(model);
			JOptionPane.showMessageDialog(null, model.get_naam() + " " + model.get_voornaam() + " is toegevoegd");
		}
		
		//Laatste stap, toevoegen van de verschillende nationaliteiten...
		for(String s:model.getNationaliteiten())
		{
			Persoon_NationaliteitDAO.insertPersoonNationaliteit(model.getPersoonId(), s);
		}
		//Als alle stappen goed doorlopen zijn wordt een melding teruggestuurd dat het personeelslid is toegevoegd
			
		
	}
	//Validatie van bestaand persoon, adres bij toevoegen in database
	//Lieven Drijkoningen
	public static ToevoegenPersoneelModel validateNieuwePersoonAdres(ToevoegenPersoneelModel model)
	{
		//Valideren of het ingevoerde adres al bestaat		  
		model.setAdresId(AdresDAO.getAdresId(model));
		//Valideren of de ingevoerde persoon al bestaat
		model.setPersoonId(PersoonDAO.getPersoonId(model));		 
		return model;
	}
	
	
}